﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using System.Data.SqlClient;
using System.Data;

namespace DAO
{
    public class TuyenDuongDAO : AbstractDAO<TuyenDuongDTO>
    {

        protected override string GetTableName()
        {
            return "tuyenduong";
        }

        public override TuyenDuongDTO GetByDataRow(System.Data.DataRow data)
        {
            DTO.TuyenDuongDTO tuyenDuong = new DTO.TuyenDuongDTO();
            int id, loai, kc, soLuongXe;

            int.TryParse(data["id"].ToString(), out id);
            int.TryParse(data["loai"].ToString(), out loai);
            int.TryParse(data["khoangcach"].ToString(), out kc);
            int.TryParse(data["soluongxe"].ToString(), out soLuongXe);
            tuyenDuong.Id = id;
            tuyenDuong.Loai = loai;
            tuyenDuong.KhoangCach = kc;
            tuyenDuong.SoLuongXe = soLuongXe;

            tuyenDuong.GioBatDauChay = data["giobatdauchay"].ToString();
            tuyenDuong.GioNghi = data["gionghi"].ToString();

            tuyenDuong.NoiDen = data["noiden"].ToString();
            tuyenDuong.NoiDi = data["noidi"].ToString();

            return tuyenDuong;
        }

        public bool Edit(DTO.TuyenDuongDTO xeDTO)
        {
            IList<SqlParameter> listParameter = new List<SqlParameter>();
            listParameter.Add(new SqlParameter("@Id", xeDTO.Id));
            listParameter.Add(new SqlParameter("@NoiDen", xeDTO.NoiDen));
            listParameter.Add(new SqlParameter("@NoiDi", xeDTO.NoiDi));
            listParameter.Add(new SqlParameter("@KhoangCach", xeDTO.KhoangCach));
            listParameter.Add(new SqlParameter("@GioChay", xeDTO.GioBatDauChay));
            listParameter.Add(new SqlParameter("@GioNghi", xeDTO.GioNghi));
            listParameter.Add(new SqlParameter("@Loai", xeDTO.Loai));
            SqlParameter thongBao = new SqlParameter("@ThanhCong", SqlDbType.Bit);
            thongBao.Direction = System.Data.ParameterDirection.Output;
            listParameter.Add(thongBao);

            this.dataProvider.ExecuteStoreProc(
                "Proc_CapNhatTuyenDuong",
                listParameter);
            return (bool)thongBao.Value;
        }


        public bool AddNew(TuyenDuongDTO tuyenDuongDTO)
        {
            IList<SqlParameter> listParameter = new List<SqlParameter>();
            listParameter.Add(new SqlParameter("@NoiDen", tuyenDuongDTO.NoiDen));
            listParameter.Add(new SqlParameter("@NoiDi", tuyenDuongDTO.NoiDi));
            listParameter.Add(new SqlParameter("@KhoangCach", tuyenDuongDTO.KhoangCach));
            listParameter.Add(new SqlParameter("@GioBatDauChay", tuyenDuongDTO.GioBatDauChay));
            listParameter.Add(new SqlParameter("@GioNghi", tuyenDuongDTO.GioNghi));
            listParameter.Add(new SqlParameter("@Loai", tuyenDuongDTO.Loai));

            SqlParameter sqlThongBao = new SqlParameter("@ThanhCong", SqlDbType.Bit);
            sqlThongBao.Direction = System.Data.ParameterDirection.Output;
            listParameter.Add(sqlThongBao);

            this.dataProvider.ExecuteStoreProc(
                "Proc_ThemTuyenDuong",
                listParameter);
            return (bool)sqlThongBao.Value;
        }
    }
}
